home *** CD-ROM | disk | FTP | other *** search
/ Sprite 1984 - 1993 / Sprite 1984 - 1993.iso / src / lib / c / unixSyscall / access.c < prev    next >
C/C++ Source or Header  |  1988-08-10  |  1KB  |  62 lines

  1. /* 
  2.  * access.c --
  3.  *
  4.  *    Procedure to map from Unix access system call to Sprite.
  5.  *
  6.  * Copyright 1986 Regents of the University of California
  7.  * All rights reserved.
  8.  */
  9.  
  10. #ifndef lint
  11. static char rcsid[] = "$Header: access.c,v 1.2 88/08/10 11:38:58 ouster Exp $ SPRITE (Berkeley)";
  12. #endif not lint
  13.  
  14. #include "sprite.h"
  15. #include "fs.h"
  16. #include "proc.h"
  17.  
  18. #include "compatInt.h"
  19. #include <errno.h>
  20. #include <sys/file.h>
  21.  
  22. /*
  23.  *----------------------------------------------------------------------
  24.  *
  25.  * access --
  26.  *
  27.  *    Procedure for Unix access call. 
  28.  *
  29.  * Results:
  30.  *    UNIX_SUCCESS if the access mode was valid.
  31.  *    UNIX_FAILURE if the access mode was not valid.
  32.  *
  33.  * Side effects:
  34.  *    None.
  35.  *
  36.  *----------------------------------------------------------------------
  37.  */
  38.  
  39. int
  40. access(pathName, mode)
  41.     char *pathName;        /* The name of the file to open */
  42.     int     mode;            /* access mode to test for */
  43. {
  44.     int spriteMode;
  45.     ReturnStatus status;
  46.  
  47.     if (mode == F_OK) {
  48.     spriteMode = FS_EXISTS;
  49.     } else {
  50.     spriteMode = ((mode&R_OK)?FS_READ:0) | ((mode&W_OK)?FS_WRITE:0) |
  51.         ((mode&X_OK)?FS_EXECUTE:0);
  52.     }
  53.  
  54.     status = Fs_CheckAccess(pathName, spriteMode, TRUE);
  55.     if (status != SUCCESS) {
  56.     errno = Compat_MapCode(status);
  57.     return(UNIX_ERROR);
  58.     } else {
  59.     return(UNIX_SUCCESS);
  60.     }
  61. }
  62.